package com.alisls.activiti.service.service;

import com.alisls.activiti.service.req.ModelREQ;
import com.alisls.activiti.service.util.Result;
import com.alisls.activiti.service.vo.ModelVO;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * 模型服务
 *
 * @author Ke Wang
 */
public interface ModelService {

    /**
     * 条件分页查询流程定义模型
     * @param modelREQ 查询条件
     * @return 查询结果
     */
    Map<String, Object> page(ModelREQ modelREQ);

    /**
     * 保存一条模型数据
     * @param modelVO 模型视图
     * @return 模型标识
     */
    String save(ModelVO modelVO) throws Exception;

    /**
     * 根据模型标识删除
     * @param id 模型标识
     * @return 是否删除成功
     */
    Boolean delete(String id);

    /**
     * 通过模型数据部署流程定义
     * @param modelId 模型标识
     * @return 结果
     * @throws Exception 异常
     */
    Boolean deploy(String modelId) throws Exception;

    /**
     * 将模型以zip的方式导出
     * @param modelId 模型标识
     * @param response 响应
     */
    void exportZip(String modelId, HttpServletResponse response);

}
